package api;

import com.fasterxml.jackson.databind.ObjectMapper;
import model.Blog;
import model.BlogDao;
import model.User;
import model.UserDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


@WebServlet("/author")
public class AuthorServlet extends HttpServlet {
    private ObjectMapper objectMapper = new ObjectMapper();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //super.doGet(req, resp);

        // 根据blogId 来查询作者，并返回给前端，把作者显示到博客详情页中
        String blogId = req.getParameter("blogId");
        // 判断一下
        // 注意获取到的 blogId，是一个字符串类型
        if(blogId == null) {
            // 返回给前端一个页面，提示错误信息
            resp.setContentType("text/html;charset=utf8");
            resp.getWriter().write("缺少blogId参数");
            return;
        }
        // 先获取到博客信息，有博客信息查找到作者
        BlogDao blogDao = new BlogDao();
        Blog blog = blogDao.selectById(Integer.parseInt(blogId));
        // 也先进行判断一下博客是否存在
        if(blog == null) {
            resp.setContentType("text/html;charset=utf8");
            resp.getWriter().write(blogId + "对应的博客不存在");
            return;
        }
        // 根据 blog 中的 userId 找到对应的用户信息
        UserDao userDao = new UserDao();

        // 注意此处获取到的应该是 文章对应到的 userId ， 不是blogId
        //User author = userDao.selectById(blog.getBlogId());

        User author = userDao.selectById(blog.getUserId());
        // 返回到前端，以 json 字符串的形式返回，需要用到 ObjectMapper
        String strJson = objectMapper.writeValueAsString(author);
        resp.setContentType("application/json;charset=utf8");
        resp.getWriter().write(strJson);
    }
}
